﻿using System;
using System.Data;
using System.IO;
using Styx;
using Styx.Helpers;

namespace TuanHA_Monk
{
    public class THSettings : Settings
    {
        public static readonly THSettings Instance = new THSettings();

        #region DataSource

        public readonly DataSet DsCleanseASAP = new DataSet("CleanseASAP");

        public string PathCastSpells = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
                                                    string.Format(
                                                        @"Routines/TuanHAMonk/THListCastSpells.xml"));

        public string PathChannelSpells = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
                                                       string.Format(
                                                           @"Routines/TuanHAMonk/THListChannelSpells.xml"));

        public string PathCleanseASAP = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
                                                     string.Format(
                                                         @"Routines/TuanHAMonk/THListCleanseASAP.xml"));

        public string PathCleanseDoNot = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
                                                      string.Format(
                                                          @"Routines/TuanHAMonk/THListCleanseDoNot.xml"));

        public string PathHealDoNot = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
                                                   string.Format(
                                                       @"Routines/TuanHAMonk/THListHealDoNot.xml"));


        public bool UpdateStatus;

        public THSettings()
            : base(
                Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
                             string.Format(@"Routines/TuanHAMonk/TuanHA-Monk-Settings-{0}.xml",
                                           StyxWoW.Me.Name)))
        {
            DsCleanseASAP.ReadXml(PathCleanseASAP);
        }

        #endregion

        #region General

        [Setting, DefaultValue(60)]
        public int SStartEating { get; set; }

        [Setting, DefaultValue(true)]
        public bool SBuff { get; set; }

        [Setting, DefaultValue(1000)]
        public int SPending { get; set; }

        #endregion

        #region Movement

        [Setting, DefaultValue(true)]
        public bool EnableMovement { get; set; }

        [Setting, DefaultValue(false)]
        public bool EnableMoveBehindTarget { get; set; }

        #endregion

        #region Heal

        [Setting, DefaultValue(95)]
        public int SDoNotHealAbove { get; set; }

        [Setting, DefaultValue(40)]
        public int SUrgentHeal { get; set; }

        [Setting, DefaultValue(70)]
        public int SPriorityHeal { get; set; }

        [Setting, DefaultValue(90)]
        public int SUplift { get; set; }

        [Setting, DefaultValue(3)]
        public int SUpliftMinUnit { get; set; }

        [Setting, DefaultValue(70)]
        public int SEnvelopingMist { get; set; }

        [Setting, DefaultValue(50)]
        public int SSurgingMist { get; set; }

        [Setting, DefaultValue(90)]
        public int SManaTea { get; set; }

        [Setting, DefaultValue(90)]
        public int SChiBurstHeal { get; set; }

        [Setting, DefaultValue(3)]
        public int SChiBurstHealUnit { get; set; }

        [Setting, DefaultValue(95)]
        public int SSoothingMist { get; set; }

        [Setting, DefaultValue(30)]
        public int SLifeCocoon { get; set; }

        [Setting, DefaultValue(30)]
        public int SZenSphere { get; set; }

        [Setting, DefaultValue(30)]
        public int SChiWave { get; set; }

        [Setting, DefaultValue(100)]
        public int SRenewingMist { get; set; }

        [Setting, DefaultValue(true)]
        public bool SChiAttack { get; set; }

        [Setting, DefaultValue(40)]
        public int SRevival { get; set; }

        [Setting, DefaultValue(4)]
        public int SRevivalUnit { get; set; }

        [Setting, DefaultValue(95)]
        public int SChiTorpedo { get; set; }

        [Setting, DefaultValue(3)]
        public int SChiTorpedoUnit { get; set; }

        [Setting, DefaultValue(90)]
        public int SSpinCraneKickHeal { get; set; }

        [Setting, DefaultValue(3)]
        public int SSpinCraneKickHealUnit { get; set; }

        [Setting, DefaultValue(50)]
        public int SManaStanceSwitch { get; set; }

        [Setting, DefaultValue(0)]
        public int SJabChi { get; set; }

        [Setting, DefaultValue(3)]
        public int SThunderFocusUnit { get; set; }

        [Setting, DefaultValue(true)]
        public bool SDetox { get; set; }

        [Setting, DefaultValue(3)]
        public int SDetoxDebuffNumber { get; set; }


        [Setting, DefaultValue(true)]
        public bool SSummonJadeSerpentStatue { get; set; }

        #endregion

        #region Survive

        [Setting, DefaultValue(true)]
        public bool SLagTolerance { get; set; }

        [Setting, DefaultValue(true)]
        public bool SGuard { get; set; }

        [Setting, DefaultValue(true)]
        public bool STrinketPvP { get; set; }

        [Setting, DefaultValue(50)]
        public int SHealthStone { get; set; }

        [Setting, DefaultValue(40)]
        public int SFortifyingBrew { get; set; }

        [Setting, DefaultValue(4)]
        public int SAvertHamUnit { get; set; }

        [Setting, DefaultValue(40)]
        public int SAvertHam { get; set; }

        [Setting, DefaultValue(4)]
        public int SZenMedUnit { get; set; }

        [Setting, DefaultValue(40)]
        public int SZenMed { get; set; }

        #endregion

        #region Attack

        [Setting, DefaultValue(true)]
        public bool SRoll { get; set; }

        [Setting, DefaultValue(true)]
        public bool SFSK { get; set; }

        [Setting, DefaultValue(true)]
        public bool SProvoke { get; set; }

        [Setting, DefaultValue(true)]
        public bool SSummonBlackOxStatue { get; set; }

        [Setting, DefaultValue(true)]
        public bool SLeeroftheOx { get; set; }

        [Setting, DefaultValue(true)]
        public bool SDizzyingHaze { get; set; }

        [Setting, DefaultValue(true)]
        public bool SClash { get; set; }

        [Setting, DefaultValue(true)]
        public bool SAutoAttack { get; set; }

        [Setting, DefaultValue(3)]
        public int SSpinningCraneKick { get; set; }

        [Setting, DefaultValue(true)]
        public bool SXuen { get; set; }

        [Setting, DefaultValue(60)]
        public int SFood { get; set; }

        [Setting, DefaultValue(true)]
        public bool SAutoTarget { get; set; }

        [Setting, DefaultValue(false)]
        public bool SMoveToTarget { get; set; }

        [Setting, DefaultValue(true)]
        public bool STouchofDeath { get; set; }

        #endregion
        #region Group Healing
        [Setting, DefaultValue(true)]
        public bool SGroup1 { get; set; }

        [Setting, DefaultValue(true)]
        public bool SGroup2 { get; set; }

        [Setting, DefaultValue(true)]
        public bool SGroup3 { get; set; }

        [Setting, DefaultValue(true)]
        public bool SGroup4 { get; set; }

        [Setting, DefaultValue(true)]
        public bool SGroup5 { get; set; }

        [Setting, DefaultValue(true)]
        public bool SGroup6 { get; set; }

        [Setting, DefaultValue(true)]
        public bool SGroup7 { get; set; }

        [Setting, DefaultValue(true)]
        public bool SGroup8 { get; set; }
        #endregion
        
        #region Interrupt

        [Setting, DefaultValue(true)]
        public bool SSpearHandStrike { get; set; }

        [Setting, DefaultValue(true)]
        public bool SFistsofFuryInterrupt { get; set; }

        [Setting, DefaultValue(true)]
        public bool SArcaneTorrent { get; set; }

        [Setting, DefaultValue(true)]
        public bool SQuakingPalm { get; set; }

        [Setting, DefaultValue(true)]
        public bool SWarStomp { get; set; }

        #endregion

        #region Override

        [Setting, DefaultValue(17)] //Q
            public int SStrafleLeft { get; set; }

        [Setting, DefaultValue(23)] //W
            public int SForward { get; set; }

        [Setting, DefaultValue(5)] //E
            public int SStrafleRight { get; set; }

        [Setting, DefaultValue(1)] //A
            public int STurnRight { get; set; }

        [Setting, DefaultValue(19)] //S
            public int SBackward { get; set; }

        [Setting, DefaultValue(4)] //D
            public int STurnLeft { get; set; }

        #endregion
    }
}